package com.qwz.example;

import java.util.ArrayList;
import java.util.List;
/**
* @Description: 目标对象，作为被观察者
* @Package com.qwz.example.Subject
* @author Qiuwuzhi
* @date 2019/12/24 10:01
* @version V1.0
*/
public class Subject {
    /**
     * 用来保存注册的观察者对象，也就是报纸的订阅者
     */
    private List<Observer> readers = new ArrayList<Observer>();

    /**
     * 报纸的读者需要向报社订阅，先要注册
     * @param observer
     */
    public void attach(Observer observer){
        readers.add(observer);
    }

    /**
     * 报纸的读者可以取消订阅
     * @param observer
     */
    public void detach(Observer observer){
        readers.remove(observer);
    }

    /**
     * 当每期报纸印刷出来后，就要迅速主动的被送到读者的手中
     * 相当于通知读者，让他们知道
     */
    public void notifyObservers(){
        for (Observer observer:readers){
            observer.update(this);
        }
    }
    //推模式
    public void notifyObservers(String content){
        for (Observer observer:readers){
            observer.update(content);
        }
    }
}
